﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Procedure = DeltaFlex.Data.ConsProcedures.Ordre_Treball;

namespace DeltaFlex.Data
{
    public class Ordre_Treball
    {
        public Ordre_Treball()
        { }

        #region Inserts
        public static void InsertarOrdre_Treball(int idOrdre, int idClient, int idImpresor, DateTime dataEntrega, string horaEntrega, string referenciaClient, string idTreball,
                                                 string pedidoClient, string tipoTreball, string tipocaixa, string fitxa, string tipoMesures, string mesures, string numTroquel,
                                                 string poses, string materialAdjunt, string materialTornar, string colors, string tipoClitxe, int idMaquina, string deflaccio,
                                                 string feinaFer, string observacions, string nomarxiu)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = Procedure.SP_INSERTAR_ORDRE_TREBALL;
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDORDRE,idOrdre);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDCLIENT, idClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDIMPRESOR, idImpresor);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_DATAENTREGA, dataEntrega);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_HORAENTREGA, horaEntrega);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_REFERENCIACLIENT, referenciaClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDTREBALL, idTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_PEDIDOCLIENT, pedidoClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOTREBALL, tipoTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOCAIXA, tipocaixa);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_FITXA, fitxa);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOMESURES, tipoMesures);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MESURES, mesures);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_NUMTROQUEL, numTroquel);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_POSES, poses);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MATERIALADJUNT, materialAdjunt);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MATERIALTORNAR, materialTornar);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_COLORS, colors);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOCLITXE, tipoClitxe);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDMAQUINA, idMaquina);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_DEFLACCIO, deflaccio);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_FEINAFER, feinaFer);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_OBSERVACIONS, observacions);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_NOMARXIU, nomarxiu);

            Operacions_BD.Insertar(cmd);
        }
        #endregion

        #region Selects
        public static IDataReader Cercar_NextIdOrdreTreball()
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = Procedure.SP_CERCAR_NEXT_IDORDRETREBALL;
            cmd.CommandType = CommandType.StoredProcedure;
            
            return Operacions_BD.Reader(cmd);
        }

        public static IDataReader GetOTByIdOT(int idOrdre)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = Procedure.SP_CERCAROTBYIDOT;

            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDORDRE, idOrdre);

            return Operacions_BD.Reader(cmd);
        }

        public static IDataReader LlistarOrdreTreball(int? idOrdreTreball, int idClient, string nomArxiu, string referenciaClient, string idTreball, string pedidoClient)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = Procedure.SP_CERCAR_ORDRE_TREBALL;

            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDORDRE,idOrdreTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDCLIENT,idClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_NOMARXIU,nomArxiu);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_REFERENCIACLIENT,referenciaClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDTREBALL,idTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_PEDIDOCLIENT,pedidoClient);

            return Operacions_BD.Reader(cmd);
        }
        #endregion

        #region Updates
        public static void ActualitzarOT(int idOrdre, int idClient, int idImpresor, DateTime dataEntrega, string horaEntrega, string referenciaClient, string idTreball,
                                                 string pedidoClient, string tipoTreball, string tipocaixa, string fitxa, string tipoMesures, string mesures, string numTroquel,
                                                 string poses, string materialAdjunt, string materialTornar, string colors, string tipoClitxe, int idMaquina, string deflaccio,
                                                 string feinaFer, string observacions, string nomarxiu)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = Procedure.SP_ACTUALITZARORDRE_TREBALL;

            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDORDRE, idOrdre);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDCLIENT, idClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDIMPRESOR, idImpresor);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_DATAENTREGA, dataEntrega);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_HORAENTREGA, horaEntrega);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_REFERENCIACLIENT, referenciaClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDTREBALL, idTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_PEDIDOCLIENT, pedidoClient);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOTREBALL, tipoTreball);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOCAIXA, tipocaixa);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_FITXA, fitxa);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOMESURES, tipoMesures);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MESURES, mesures);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_NUMTROQUEL, numTroquel);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_POSES, poses);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MATERIALADJUNT, materialAdjunt);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_MATERIALTORNAR, materialTornar);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_COLORS, colors);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_TIPOCLITXE, tipoClitxe);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_IDMAQUINA, idMaquina);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_DEFLACCIO, deflaccio);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_FEINAFER, feinaFer);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_OBSERVACIONS, observacions);
            cmd.Parameters.AddWithValue(Procedure.PARAMETRE_NOMARXIU, nomarxiu);

            Operacions_BD.Update(cmd);

        }
        #endregion

    }
}
